GtkCalendar: Slightly change overflow behaviour
authorMatthias Clasen <mclasen@redhat.com>
Wed, 24 Dec 2014 02:49:21 +0000 (21:49 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 24 Dec 2014 02:49:21 +0000 (21:49 -0500)
If the first of the month was falling on a Sunday, we would not
render any days of the previous month, and instead show two weeks
of the next month at the bottom. Improve this by showing one week
of each.

https://bugzilla.gnome.org/show_bug.cgi?id=301835

gtk/gtkcalendar.c

index a3a4d8554ff55ca563160799ba4a77a853edbcd4..3985a7d42e6358fe0ecf1e510b3f08b7601ee044 100644 (file)
@@ -983,27 +983,26 @@ calendar_compute_days (GtkCalendar *calendar)
 
   first_day = day_of_week (year, month, 1);
   first_day = (first_day + 7 - priv->week_start) % 7;
+  if (first_day == 0)
+    first_day = 7;
 
   /* Compute days of previous month */
   if (month > 1)
     ndays_in_prev_month = month_length[leap (year)][month - 1];
   else
     ndays_in_prev_month = month_length[leap (year - 1)][12];
-  day = ndays_in_prev_month - first_day + 1;
+  day = ndays_in_prev_month - first_day+ 1;
 
-  row = 0;
-  if (first_day > 0)
+  for (col = 0; col < first_day; col++)
     {
-      for (col = 0; col < first_day; col++)
-        {
-          priv->day[row][col] = day;
-          priv->day_month[row][col] = MONTH_PREV;
-          day++;
-        }
+      priv->day[0][col] = day;
+      priv->day_month[0][col] = MONTH_PREV;
+      day++;
     }
 
   /* Compute days of current month */
-  col = first_day;
+  row = first_day / 7;
+  col = first_day % 7;
   for (day = 1; day <= ndays_in_month; day++)
     {
       priv->day[row][col] = day;